package dominio.fantasma.estados;

import dominio.comun.Posicion;
import dominio.fantasma.IFantasma;

public abstract class EstadoFantasma {
	
	private IFantasma fantasma;
	private EstadoFantasma estadoFantasmaAnterior;
	private EstadoFantasma estadoFantasmaSiguiente;
	private int agresividad;
	protected int AGRESIVIDAD_INICIAL = 1;
	protected static int INCREMENTO_AGRESIVIDAD = 1;
	protected static int MAXIMO_AGRESIVIDAD = 3*INCREMENTO_AGRESIVIDAD;
		
	public EstadoFantasma() {
		this.agresividad = AGRESIVIDAD_INICIAL;
	}
	
	protected IFantasma getFantasma() {
		return fantasma;
	}

	public void setFantasma(IFantasma fantasma) {
		this.fantasma = fantasma;
	}

	protected EstadoFantasma getEstadoFantasmaAnterior() {
		return estadoFantasmaAnterior;
	}

	public void setEstadoFantasmaAnterior(EstadoFantasma estadoFantasmaAnterior) {
		this.estadoFantasmaAnterior = estadoFantasmaAnterior;
	}

	protected EstadoFantasma getEstadoFantasmaSiguiente() {
		return estadoFantasmaSiguiente;
	}

	public void setEstadoFantasmaSiguiente(EstadoFantasma estadoFantasmaSiguiente) {
		this.estadoFantasmaSiguiente = estadoFantasmaSiguiente;
	}

	public int getAgresividad() {
		return agresividad;
	}
	
	public int getMaximaAgresividad(){
		return MAXIMO_AGRESIVIDAD;
		
	}

	protected void setAgresividad(int agresividad) {
		this.agresividad = agresividad;
	}

	public abstract void iniciar();
	public abstract void convertirEnPresa();
	public abstract void matar();
	public abstract void molestar();
	public abstract void mover(Posicion posicionActual);	
	
}
